import { defineStore } from 'pinia'
import { store } from '../index'
import * as CrmModuleApi from '@/api/crm/module'
import router from '@/router'
// const message = useMessage() // 消息弹窗
export const useCrmStore = defineStore('crm', {
  state: () => {
    return {
      modules: null,
      moduleId: undefined
    }
  },
  getters: {
    getModules() {
      return this.modules
    },
    getModuleId() {
      return this.moduleId
    }
  },
  actions: {
    async asyncGetModules() {
      if (!this.modules) {
        const data = await CrmModuleApi.getModuleList()
        if (data && data.length > 0) {
          this.modules = data
        }
      }
      return this.modules
    },
    async getOrSetModules() {
      const data = await this.asyncGetModules()
      if (!data) {
        ElMessageBox.confirm('当前账户尚未配置CRM模块，请先配置模块', '重要提示', {
          confirmButtonText: '去配置',
          cancelButtonText: '取消',
          type: 'warning'
        })
          .then((res) => {
            // alert('1')
            // 跳转到模块配置
            router.push({
              path: '/crm/module'
            })
          })
          .catch((err) => {
            // alert('2')
          })
      }
    },
    resetModule(modules) {
      if (modules) {
        this.modules = modules
      } else {
        this.modules = null
        this.getOrSetModules()
      }
    },
    resetState() {
      this.moduleId = undefined
      this.modules = null
    },
    async setModuleId(moduleId) {
      this.moduleId = moduleId
    }
  }
})

export const useCrmStoreWithOut = () => {
  return useCrmStore(store)
}
